// 异常状态码枚举
export enum EExceptionStatusCode {
  // 未登录
  UNAUTHORIZED = 401,
  // 无权限
  FORBIDDEN = 403,
  // 未找到
  NOT_FOUND = 404,
  // 请求超时
  REQUEST_TIMEOUT = 408,
  // 请求参数/表单 校验失败
  REQUEST_VALIDATE_FAILED = 422,
  // 服务异常
  SERVER_UNAVAILABLE = 500,
  // 数据库异常
  DB_ERROR = 501
}

// 通用异常接口
export interface IException<T = any> extends Error {
  // 异常状态码
  statusCode?: EExceptionStatusCode
  // 异常状态下携带的数据
  data?: T
}

// 用户状态枚举
export enum EUserStatus {
  // 正常
  NORMAL = 1,
  // 禁用
  DISABLE = 0
}

// 校验中间件选项类型
export interface IValidationMiddlewareOptions {
  isAsync?: boolean // 是否异步
}
